package com.cm.kits;

import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.Constructor;

/**
 * Yaml 配置文件加载工具
 *
 * @author LWang 2023.01.29
 * @since 1.0.0
 */
public final class YamlKits {
    private YamlKits() {

    }

    /**
     * 读取 YAML 配置文件
     *
     * @param config 配置文件路径
     * @param clazz  配置对象映射类
     * @param <T>    配置对象泛型
     * @return 配置对象
     */
    public static <T> T load(String config, Class<T> clazz) {
        try (var in = ClassLoader.getSystemResourceAsStream(config)) {
            return new Yaml(new Constructor(clazz)).load(in);
        } catch (Exception ex) {
            throw new IllegalArgumentException("指定的配置文件无效！", ex);
        }
    }
}
